package csu.web.credit_bank.service;

import csu.web.credit_bank.pojo.ResourceRecommendation;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface ResourceRecommendationsService extends IService<ResourceRecommendation> {

    /**
     * [Business Method] 记录一次资源浏览行为.
     * 这是一个复合操作：如果记录存在，则浏览量+1；如果不存在，则创建新记录.
     * @param userId 用户ID.
     * @param major 专业.
     * @return 操作后的推荐记录对象.
     */
    ResourceRecommendation logResourceView(String userId, String major);

    // --- Standard CRUD Methods ---

    /**
     * [Create] 创建一条新的推荐记录.
     * @param recommendation 要创建的推荐记录对象.
     * @return 创建成功后的对象.
     */
    ResourceRecommendation createRecommendation(ResourceRecommendation recommendation);

    /**
     * [Read] 根据用户ID和专业获取单条推荐记录.
     * @param userId 用户ID.
     * @param major 专业.
     * @return 推荐记录对象, 如果不存在则返回null.
     */
    ResourceRecommendation getRecommendation(String userId, String major);

    /**
     * [Read] 获取一个用户的所有推荐记录.
     * @param userId 用户ID.
     * @return 推荐记录列表.
     */
    List<ResourceRecommendation> getRecommendationsByUserId(String userId);

    /**
     * [Update] 更新一条推荐记录.
     * @param recommendation 包含更新信息的推荐记录对象.
     * @return 更新后的对象.
     */
    ResourceRecommendation updateRecommendation(ResourceRecommendation recommendation);

    /**
     * [Delete] 删除一条推荐记录.
     * @param id 推荐记录的ID.
     * @return 如果删除成功，返回true.
     */
    boolean deleteRecommendation(String id);
}
